const { mainCoord, maintag } = require('./transform');
const XLSX = require('xlsx');
const fs = require('fs');
const path = require('path');

/**
 * 主函数：从.xls文件中提取所有sheet并分别处理
 * @param {string} xlsFileName - 输入的.xls文件名
 */
function main(xlsFileName) {
    try {
        // 构建输入文件的完整路径
        const inputFilePath = path.join(__dirname, 'data', xlsFileName);
        
        console.log(`正在读取Excel文件: ${inputFilePath}`);
        
        // 读取.xls文件
        const workbook = XLSX.readFile(inputFilePath);
        
        console.log(`成功读取文件，共包含 ${workbook.SheetNames.length} 个工作表`);
        
        // 遍历每个sheet
        workbook.SheetNames.forEach(sheetName => {
            console.log(`正在处理工作表: ${sheetName}`);
            
            // 创建新的工作簿，只包含当前sheet
            const newWorkbook = XLSX.utils.book_new();
            XLSX.utils.book_append_sheet(newWorkbook, workbook.Sheets[sheetName], sheetName);
            
            // 生成新的xlsx文件名（使用sheet名称）
            // 移除文件名中可能不合法的字符
            const validSheetName = sheetName.replace(/[\\/:*?"<>|]/g, '_');
            const xlsxFileName = `${validSheetName}.xlsx`;
            const outputFilePath = path.join(__dirname, 'data', xlsxFileName);
            
            // 保存单独的xlsx文件
            if (fs.existsSync(outputFilePath)) {
                console.log(`发现已存在的文件: ${outputFilePath}，正在删除...`);
                fs.unlinkSync(outputFilePath);
            }
            
            XLSX.writeFile(newWorkbook, outputFilePath);
            console.log(`已生成单独的xlsx文件: ${outputFilePath}`);
            
            // 对新生成的xlsx文件执行坐标转换和打标签操作
            processXlsxFile(xlsxFileName);
        });
        
        console.log('所有工作表处理完成！');
    } catch (error) {
        console.error('处理过程中发生错误:', error.message);
    }
}

/**
 * 批量处理单个xlsx文件的多个sheet表格：执行坐标转换和打标签
 * @param {string} xlsxFileName - xlsx文件名
 */
function processXlsxFile(xlsxFileName) {
    // 生成WGS84和打标签后的文件名
    let wgs94fileName = xlsxFileName.replace(".xlsx", "-WGS84.xlsx");
    let dealedFileName = xlsxFileName.replace(".xlsx", "-D.xlsx");
    
    // 执行坐标转换
    console.log(`正在对 ${xlsxFileName} 执行坐标转换...`);
    mainCoord(xlsxFileName, wgs94fileName);
    
    // 执行打标签操作
    console.log(`正在对 ${wgs94fileName} 执行打标签操作...`);
    maintag(wgs94fileName, dealedFileName);
}

// 执行主函数，处理指定的.xls文件
main('1-1760596089362文件0.xls');